package com.yunyao.web.controller;

import com.yunyao.common.dto.audit.AuditConfirmHistoryDto;
import com.yunyao.common.web.util.YResult;
import com.yunyao.framework.service.AuditConfirmHistoryService;
import com.yunyao.common.dto.audit.AuditTaskDto;
import com.yunyao.common.web.util.PageResult;
import com.yunyao.framework.dto.audit.AuditHistoryTaskDto;
import com.yunyao.framework.service.AuditService;
import com.yunyao.framework.vo.audit.AuditConfirmHistoryVO;
import com.yunyao.framework.vo.audit.AuditHistoryTaskVO;
import com.yunyao.framework.vo.audit.AuditTaskVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * @author xingjishuai
 * @date 2024-08-16
 */
@RestController
@RequestMapping("/audit")
public class AuditController {

    @Autowired
    private AuditService auditService;
    @Autowired
    private AuditConfirmHistoryService auditConfirmService;
    /**
     * 通过GET请求获取历史任务列表
     *
     * @param taskListDto 包含查询条件的对象，用于筛选历史任务
     * @return 返回一个YResult对象，其中包含历史任务列表
     *         YResult是封装了列表数据的响应对象，可能包含成功状态、错误代码和消息等信息
     */
    @GetMapping("/history/task/list")
    public YResult<List<AuditHistoryTaskVO>> getHistoryTaskList(AuditHistoryTaskDto taskListDto) {
        return auditService.getHistoryTaskList(taskListDto);
    }

    /**
     * 使用@GetMapping注解，当处理HTTP GET请求到"/task/list"的URL时，会调用此方法
     * 该方法的目的是提供一个接口，用于查询待审核任务列表，支持分页和条件查询
     * 它接收一个AuditTaskDto对象作为查询条件，返回一个YResult对象，其中包含PageResult<AuditTaskVO>类型的分页结果
     * 主要用于前端展示待审核任务的列表数据
     *
     * @param auditTaskDto 用于指定查询条件的对象，包括分页信息和查询参数
     * @return 返回一个YResult对象，包含分页展示的待审核任务列表
     */
    @GetMapping("/task/list")
    public YResult<PageResult<AuditTaskVO>> getTaskList(AuditTaskDto auditTaskDto) {
        return auditService.getTaskList(auditTaskDto);
    }



    @GetMapping("/confirm/history/list")
    public YResult<List<AuditConfirmHistoryVO>> getHistoryList(AuditConfirmHistoryDto dto) {
        return auditConfirmService.getHistoryListByBizId(dto);
    }

}
